#include <iostream>
#include <vector>
#include <string>

std::vector<std::string> vs;

template<typename T>
void FuncFoo(T&& t)
{
    vs.emplace_back(std::forward<T>(t));
}

void FuncFoo(int) 
{
}


class Person {
private:
    std::string name;

public:
    template<typename T>
    Person(T&& t) :
        name(std::forward<T>(t))
    {
    }
};

int main() {

    FuncFoo("hello");
    FuncFoo(1);

    // short s = 1;
    // FuncFoo(s);

    {
        const Person p("name");
        Person p1(p);
    }

    return 0;
}